home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CUCD / Sound / PlayMF_VU / PlayMF / PlayMF.doc < prev    next >
Text File  |  1998-03-22  |  8KB  |  242 lines

  1.  
  2.             --------------------------------------------------
  3.                PlayMF - a MIDI file player with XPK support
  4.             --------------------------------------------------
  5.  
  6.    Original Design and coding by Dan Baker, Commodore Business Machines.
  7.  
  8.             Modified and Bugfixed in 1998 by Christian Buchner
  9.  
  10.  
  11. This  is a MIDI file player that reads SMF (.MID) Files and sends them to a
  12. Midi port using the Commodore Amiga MIDI Library (camd.library).
  13.  
  14. The  original  playmf was part of an example package showing how to program
  15. CAMD  applications.   It lacked proper SysEx support and had a buggy timing
  16. routine.
  17.  
  18. I re-arranged the source code and rewrote most of the functions.
  19.  
  20. The  program  has  been  optimized  for  use with the Waveblaster Hack (see
  21. Aminet:    hard/hack/Waveblaster.lha).   Also  known  as  "Project  XG"  in
  22. England.   This is basically connecting a Wavetable soundcard to the serial
  23. port  of  your Amiga.  Try it!  it's easy and quite cheap.  What you get is
  24. excellent MIDI sound.
  25.  
  26.  
  27. Requirements
  28. ------------
  29.  
  30. * any MIDI synthesizer connected to your Amiga
  31.   (IMPORTANT: use GMPlay instead if you don't have any synthesizer!)
  32.  
  33. * OS 3.0 or better.
  34.  
  35. * 020  processor or better  (this program uses 64 bit instructions for very
  36.   exact timing calculations)
  37.  
  38. * installed camd.library (available on Aminet)
  39.  
  40. * installed realtime.library (part of Workbench 3.0 or 3.1 ?)
  41.  
  42.  
  43. Usage
  44. -----
  45.  
  46. This  program  can  be started from both Workbench and Shell.  When started
  47. from  Workbench  or  from  Shell without filename, the program opens an ASL
  48. requester and asks for any MIDI file.
  49.  
  50. The command template is "FILE,LINK/K,REPLACE/S,GM/S,GS/S,XG/S,MT32/S"
  51.  
  52. * FILE   (Argument, does not require the FILE keyword)
  53.  
  54. The  MIDI  file to play.  No wildcards, no multiple filenames (yet).  Loads
  55. standard  .MID files type 0 and 1.  May be packed with any (installed!) XPK
  56. sublibrary.    XPK   compressed   files   require   xpkmaster.library   for
  57. decompression.   New:   Specifying  a  directory name here will open an ASL
  58. filerequester with this directory as default.
  59.  
  60. * LINK/K   (Keyword)
  61.  
  62. Specify  the MIDI output cluster (link) to send the data to.  By specifying
  63. a non-existing cluster, you will create a new one.  The default is "out.0".
  64. This  is  usually  the  internal  serial port.  You can use the preferences
  65. program  "MidiPorts"  (which  is  part  of  the CAMD package) to define the
  66. connections  between  MIDI  hardware  and  cluster name.  Refer to the CAMD
  67. documentation for more information.
  68.  
  69. * REPLACE/S   (Switch)
  70.  
  71. Replace  the currently playing MIDI file (to the specified MIDI cluster) by
  72. the  selected  one.   This  will  send a CTRL-C (break signal) to the other
  73. PlayMF task.
  74.  
  75.  
  76. The  following  switches  will  probably  work with Yamaha synthesizers (XG
  77. compatible)  only.   If  you  do not specify any of these switches, no MIDI
  78. reset will be sent (unless there is one in the MIDI file).
  79.  
  80. * GM/S   (Switch)
  81.  
  82. send a General MIDI initialisation.  Only 1 sample and 1 drum bank.  Strict
  83. General MIDI only.
  84.  
  85. * GS/S   (Switch)
  86.  
  87. Enable Roland GS compatibility (TG300B) mode of the XG synthesizer.  Should
  88. be  tried  first when listening to unknown MIDI files that are not known to
  89. be in XG format.  If problems occur, switch back to GM, then try MT32.
  90.  
  91. * XG/S   (Switch)
  92.  
  93. Reset  to  Yamaha XG mode, which is the default mode of any XG synthesizer.
  94. Use this switch if the XG MIDI file you want to play doesn't properly reset
  95. the  synthesizer.   Some  composers  forget  to  include  a XG reset at the
  96. beginning of their files.  Shame on them!
  97.  
  98. * MT32/S   (Switch)
  99.  
  100. Enable  Roland  MT32 synth emulation.  Use this if you have MIDI files that
  101. identify  themselves  as  MT32 files (e.g.  something32.MID) and sound ugly
  102. using the other initialisations.
  103.  
  104.  
  105.  
  106. General Tips
  107. ------------
  108.  
  109. There  can  be  multiple PlayMF tasks running playing different MIDI files.
  110. However  each task must be sending to a different MIDI cluster.  Except for
  111. a  few  special cases, it really makes not much sense to mix two MIDI files
  112. to  one  MIDI cluster.  Use the REPLACE switch if you want to interrupt the
  113. currently playing MIDI file by calling another PlayMF.
  114.  
  115. When  started  from  Workbench,  the  REPLACE  option is on by default.  So
  116. selecting a MIDI file by ASL requester will interrupt any playing PlayMF.
  117.  
  118. The ASL requester allows MultiSelect and displays only MIDI files (also see
  119. Bugs).
  120.  
  121. When   PlayMF  has  been  started  from  Workbench,  it  cannot  be  easily
  122. interrupted.  You will have to use a task manager and send a break (CTRL-C)
  123. signal to it.
  124.  
  125. From the shell a simple CTRL-C interrupts the currently playing MIDI file.
  126.  
  127.  
  128.  
  129. Bugs
  130. ----
  131.  
  132. well, seems to work fine, except...
  133.  
  134. *  The  ASL  filerequester  of  PlayMF  uses  callback  hooks  for filetype
  135. recognition.   The Mui-ASL replacement has not implemented this, so it will
  136. show _NO_ files at all!  Ask the author to fix this (or at least show _all_
  137. files).
  138.  
  139.  
  140. History
  141. -------
  142.  
  143. Release 1: initial release on Aminet, about Feb 25th 1998, 21h 
  144.  
  145. Release 2: First bugfix three hours later:
  146.            The tracks of (only a few) midifiles used to get out of
  147.            sync. Found the bug in the routine that skipped unused
  148.            events. This one already existed in the original playmf.
  149.            So not my fault, really ;-)
  150.  
  151.            Added ASL filerequester code by cdtv. Thanks, man!
  152.  
  153.            Added Workbench startup code.
  154.  
  155.            Added Link keyword (MIDI cluster specification) and
  156.            the detection of another PlayMF task sending to the
  157.            same Link.
  158.  
  159.            Added REPLACE switch. See above.
  160.  
  161.            Passing a directory name as FILE argument will open
  162.            the ASL requester with that default directory.
  163.  
  164. Release 3: added the fireworks to the distribution
  165.  
  166. Release 4: speeded up the BOOPSI classes and the fireworks
  167.  
  168.            PlayMF now sends an All Notes Off *and* All Sounds Off
  169.            channel mode message upon termination. This should fix
  170.            all cases hanging notes (especially those held by
  171.            sostenuto pedal)
  172.  
  173. Bugfixed
  174. Release 4: argh, sending AllSoundsOff didn't work. Fixed.
  175.  
  176. Release 5: Improved Fireworks tool a lot. Can now even control
  177.            PlayMF.
  178.  
  179. Release 6: again loaded Fireworks tool with new features. Seems
  180.            to be my favourite toy now.
  181.  
  182.  
  183. Future
  184. ------
  185.  
  186. * pattern matching, mutiple file names
  187.  
  188. * add ability to directly play from .zip files (e.g. from the Internet)
  189.  
  190. * WB App Icon
  191.  
  192. * implement a GUI.  Will be object oriented and use the "Betty" BOOPSI GUI
  193.   system. See http://www.cs.utah.edu/~stack/betty.html
  194.  
  195. * create a midi.datatype and doin' better than Martin Gierich ;-)
  196.  
  197. * create a GMPlay version that hooks into camd.library
  198.  
  199.  
  200. See Also
  201. --------
  202.  
  203. "vu"  aka PianoMeter - an experimental graphical note visualisation utility
  204. using BOOPSI classes.  Try it!  It is a real eyecandy ;-) Based on the "vu"
  205. example in the CAMD developer package.
  206.  
  207. "Fireworks"  from  this  distribution  -  a  thrilling MIDI fireworks tool.
  208. Makes your music explode. Amazingly fast with Picasso 96.
  209.  
  210. GMPlay  1.3 - available on Aminet.  Uses your CPU to play MIDI music.  Does
  211. not require any MIDI synthesizer, but lots of CPU power and RAM.
  212.  
  213.  
  214. Contact
  215. -------
  216.  
  217. for comments, bug reports and suggestions:
  218.  
  219. The author: Christian Buchner
  220.  
  221.             flowerp@eikon.e-technik.tu-muenchen.de
  222.  
  223.  
  224. Greetings
  225. ---------
  226.  
  227. Rafai Mantiuk - for the BCC precompiler that allows to programm
  228.                 MUI/BOOPSI classes with C++ syntax.
  229.  
  230. Tim Stack     - for his excellent Betty GUI system. This really
  231.                 deserves more public attention. My future application
  232.                 programs will be based on Betty. 
  233.                 see http://www.cs.utah.edu/~stack/betty.html
  234.  
  235. CDTV (Tino    - for organizing the cool computer meetings in Erfurt
  236. Wildenhain)     and for testing PlayMF and VU and for his suggestions
  237.  
  238. Martin Gierich- for his midi.datatype which is based on the original
  239.                 "playmf" as well. However it is not reentrant and
  240.                 will crash when loading the second MIDI file.
  241.                 Hey, have a look at my playmf source code! ;-)
  242.